package com.qingsong.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.qingsong.dto.CartInsertDTO;
import com.qingsong.dto.CartPageDTO;
import com.qingsong.dto.CartUpdateDTO;
import com.qingsong.entity.Cart;
import com.qingsong.entity.Cart;
import com.qingsong.vo.CartSimpleListVO;

import java.util.List;

/**
 * 购物车表 服务层。
 *
 * @author qingsong
 * @since 2024-12-22
 */
public interface CartService extends IService<Cart> {

    boolean insert(CartInsertDTO dto);
    Cart select(Long id);
    List<CartSimpleListVO> simpleList();
    Page<Cart> page(CartPageDTO dto);
    boolean update(CartUpdateDTO dto);
    Double totalAmountByUserId(Long id);
    boolean cleanByUserId(Long id);
    boolean delete(Long id);
    boolean deleteBatch(List<Long> ids);

    /**
     * 根据用户主键和课程主键列表删除购物车记录
     *
     * @param userId    用户主键
     * @param courseIds 课程主键列表
     * @return true 成功，false 失败
     */
    boolean deleteByUserIdAndCourseIds(Long userId, List<Long> courseIds);
    
}
